#include <stdio.h>
#include <stdlib.h>

typedef struct Link {
	char elem;
	struct Link* next;
} link;

// 迭代法实现单链表翻转
link* iteration_reverse(link* head);

int main()
{
	// ...
	return 0;
}

link* iteration_reverse(link* head)
{
	if(head==NULL || head->next==NULL)
	{
		//只有一个节点无需翻转
		return head;
	}
	
	link* beg=NULL;
	link* mid=head;
	link* end=head->next;
	
	//遍历
	while(1)
	{
		//修改mid所指节点的指向
		mid->next=beg;
		//判断end是否为空，如果为空，则代表已经遍历到最后一个节点，退出循环
		if(end==NULL)
		{
			break; 
		} 
		
		//三个指针向后移
		beg=mid;
		mid=end;
		end=end->next; 
	} 
	
	//整体修改完后需要修改头指针指向
	head=mid;
	return head; 
}
